# -*- coding:utf-8  -*-
# @Author: ChenYangMing
# @Time: 2024-08-29

import os
import pathlib


class Config:
    """
    全局配置类，存储项目中使用的配置参数。
    属性:
    - PROJECT_ROOT: pathlib.Path，项目根目录的路径。
    - BASE_DATA_PATH: str，基础数据路径。
    - LOG_PATH: str，日志文件的存储路径。
    - ERROR_LOG_PATH: str，错误日志文件的存储路径。
    - MODEL_PATH: str，模型文件的存储路径。
    - NUM_LAYERS: int，神经网络中的层数。
    - UNITS: int，神经网络层中使用的单元或神经元的数量。
    - DROPOUT_RATE: float，Dropout层的比率。
    - EPOCHS: int，训练的轮数。
    - BATCH_SIZE: int，训练的批次大小。
    - N_ESTIMATORS: int，集成学习中基估计器的数量。
    - MAX_DEPTH: int，树模型的最大深度。
    - NUM_HEADS: int，多头注意力机制中的头数。
    - HIDDEN_DIM: int，神经网络中前馈层的维度。
    - LR: float，学习率。
    - SUBSAMPLE: float，样本抽样的比率。
    """
    PROJECT_ROOT = pathlib.Path(__file__).parent.parent
    BASE_DATA_PATH = os.path.join(PROJECT_ROOT, 'Data')
    LOG_PATH = os.path.join(PROJECT_ROOT, 'Logs')
    ERROR_LOG_PATH = os.path.join(LOG_PATH, 'errors.log')
    MODEL_PATH = os.path.join(PROJECT_ROOT, 'Models')

    NUM_LAYERS = 5
    UNITS = 1024
    DROPOUT_RATE = 0.5
    EPOCHS = 30
    BATCH_SIZE = 128

    N_ESTIMATORS = 100
    MAX_DEPTH = 5

    NUM_HEADS = 2
    HIDDEN_DIM = 32
    LR = 0.001

    SUBSAMPLE = 0.8
